package day0605;

import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

/**
 * 下面是一个使用Buffer的例子：
 * 写入数据到Buffer
 * 调用flip()方法
 * 从Buffer中读取数据
 * 调用clear()方法或者compact()方法
 * Created by Administrator on 2017/6/5.
 */
public class JBufferDemo2 {
    public static void main(String[] args) throws Exception {
        RandomAccessFile file = new RandomAccessFile("C:\\Users\\Administrator\\Desktop\\111.txt", "rw");
        //获取通道
        FileChannel inChannel = file.getChannel();

        //要想获得一个Buffer对象首先要进行分配。 每一个Buffer类都有一个allocate方法。下面是一个分配48字节capacity的ByteBuffer的例子。
        ByteBuffer buf = ByteBuffer.allocate(48);

        int btyesRead = inChannel.read(buf);
        while (btyesRead != -1) {
            //使缓冲准备读
            buf.flip();

            while (buf.hasRemaining()) {
                System.out.println((char) buf.get());
            }

            buf.clear();
            btyesRead = inChannel.read(buf);
        }
        file.close();

    }
}
